
#ifndef MENU_H_
#define MENU_H_

#include <iostream>
#include <string>
#include <stdexcept>
#include <vector>
//other types
#include "Category.h"
#include "Menu_Item.h"
#include "Recipe.h"
#include "Ingredient.h"
#include "Order.h"
#include "Order_Item.h"

using namespace std;

class Menu {
public:
   struct InvalidData : std::runtime_error {
      InvalidData(): runtime_error("Invalid input data format") {}
   };

   struct InvalidFile : std::runtime_error {
      InvalidFile(): runtime_error("Invalid input file name") {}
   };

   enum Main_menu_options{ Info=1, Read, Show, Find, Update, Exit }; 
                
        Menu();
   
   void display_main_menu() const;
   void display_info() const;//display assignment info & your name plus "Project Part I"
   void read();          
   void update();
   void show() const;
   void find() const;
   bool exit();

private:
   //private data
        vector<Category> categories;
        vector<Menu_Item> menu_items;
        vector<Recipe> recipes;
        vector<Ingredient> ingredients;
        vector<Order> orders;
        vector<Order_Item> order_items;
};

#endif //MENU_H_
